package com.zimo.download.info;

import com.zimo.utils.Connection;
import com.zimo.utils.Utils;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * 获取服务器文件信息的类，这个类的方法会阻塞线程，非必要的话就让他单独一个线程
 */
public class ServerFileINFO implements Utils {
    /**
     * 获取网络文件的名称
     * @param url
     * @return fileName     网络玩家名称
     * @throws IOException
     */
    public static  String getFileName(URL url) throws IOException {
        //获取被下载的文件名称
        String fileName;
        String name = Connection.getConnection(url,false).getHeaderField("content-disposition");
        if(name!=null && name.split(";").length>1 ) {
            //从http content-disposition头里获取文件名称 ，通常名称在第二参数中（xxx;fileName=xxx）
            name=name.split(";")[1];//flienaem="xxxx"
            name=name.split("=")[1];//"xxx"
            fileName=name.replace("\"", "");//xxx
        }else {
            //通过url地址获取文件名称
            String file0 =(url.getFile()).split("\\?")[0];//去除url中的参数
            //获取被下载的文件的路径然后切割得到文件名称
            String[] file =((url.getFile()).split("\\?")[0]).split("/");//将获取的路径进行分割
            fileName=file[file.length-1];//获取最后一个名称
        }
        return fileName;
    }

    /**
     * 获取文件长度
     * @return long
     */
    public static long getFileSize(URL url) throws IOException {
        return  Connection.getConnection(url,false).getContentLengthLong();
    }
}
